
const AntdDayjsWebpackPlugin = require('antd-dayjs-webpack-plugin')
const CracoLessPlugin = require('craco-less');
const path = require('path')
const { GitRevisionPlugin } = require('git-revision-webpack-plugin')
const gitRevisionPlugin = new GitRevisionPlugin()
// 以当前文件所处的地址为起点来查找某一个目录的绝对的地址
// __dirname 的值 就是当前文件的绝对地址
const pathResolve = pathUrl => path.join(__dirname, pathUrl)

module.exports = {
  // 这里可以配置各种插件
  plugins: [
    {
      plugin: AntdDayjsWebpackPlugin
    },
    {
      plugin: CracoLessPlugin,
      // 描述了这个插件使用上的选项配置
      options: {
        lessLoaderOptions: {
          lessOptions: {
            modifyVars: {
              // '@primary-color': 'pink', // 全局主色
            //   '@link-color': '#1890ff', // 链接色
            //   '@success-color': '#52c41a', // 成功色
            //   '@warning-color': '#faad14', // 警告色
            //  ' @error-color': '#f5222d', // 错误色
            //   '@font-size-base': '14px', // 主字号
            //   '@heading-color': 'rgba(0, 0, 0, 0.85)', // 标题色
            //   '@text-color': 'rgba(0, 0, 0, 0.65)', // 主文本色
            //   '@text-color-secondary': 'rgba(0, 0, 0, 0.45)', // 次文本色
            //   '@disabled-color': 'rgba(0, 0, 0, 0.25)', // 失效色
            //   '@border-radius-base': '2px', // 组件/浮层圆角
            //   '@border-color-base': '#d9d9d9', // 边框色
            //   '@box-shadow-base': '0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05)', // 浮层阴影
            },
            javascriptEnabled: true,
          },
        },
      },
    },
    {
      plugin: {
        // 这里可以直接拿到webpack的配置, 进行修改
        overrideWebpackConfig: ({ webpackConfig, cracoConfig, pluginOptions, context: { env, paths } }) => {
          // console.log(webpackConfig.plugins);
          // 进行打包地址修改
          if (env === 'production') {
            paths.appBuild = path.join(path.dirname(paths.appBuild), 'dist')
            webpackConfig.output.path = path.join(path.dirname(webpackConfig.output.path), 'dist')
          }
          // 全局环境变量
          const definePluginIndex = env === 'development' ? 3 : 4
          const definePlugin = webpackConfig.plugins[definePluginIndex]
          const definitions = definePlugin.definitions
          // 变量只能放字符串
          definitions['process.git'] = {
            commithash: JSON.stringify(gitRevisionPlugin .commithash()),
            version: JSON.stringify(gitRevisionPlugin .version()),
            branch: JSON.stringify(gitRevisionPlugin.branch()),
          }
          definitions['process.classes'] = {
            name: JSON.stringify('BK2208')
          }
          return webpackConfig;
        },
        options: {}
      },
    },
  ],
  webpack: {
    // 别名配置
    alias: {
      '@': pathResolve('src'),
      // '@styles': pathResolve('src/styles'),
    }
  }
};